package top.dingyingying.study.javawebjdbc.dao;

import top.dingyingying.study.javawebjdbc.entity.TbClass;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TBClassDAO {
//    jdbc.java数据库连接
//    dao: 数据访问对象
//    entity: 实体类，一般就是描述数据的类
//    java.sql.Connection类就是数据库的链接类

//    仿造上课的班级管理完成新闻管理功能
//    开发次序：1：实体类。2：对应的dao。添加，查询，删除3：完成测试。4：完成jsp界面
//    思考题：
//    仿造新闻管理，完成公告管理的功能
//    公告的信息包括主题，公告的标题，公告的内容，公告发布人的姓名，公告的发布时间
//    添加难点，就是多一个是否置顶的字段，类型是int，0表示不指置顶，1表示置顶
  public static int insert(TbClass tbClass) throws SQLException {
//      链接数据库
      Connection conn = DBHelper.getConnertion();
//      预备添加的语句,一个？表示一个参数
      String sql = "insert into tb_class (classname, classinfo) values(?,?)";
//java的预处理sql语句
      PreparedStatement ps = conn.prepareStatement(sql);
//设置？参数对应的值
      ps.setString(  1, tbClass.getClassname());
      ps.setString(2, tbClass.getClassinfo());
//      执行语句并获取语句影响的行数
      int i = ps.executeUpdate();
//      关闭数据库链接
      conn.close();
      return i;

  }

public static List<TbClass> query() throws SQLException {
      List<TbClass> list= new ArrayList<>();
//      数据库连接
    Connection conn = DBHelper.getConnertion();
//    查询语句
    String sql = "select * from tb_class";
//    预处理sql语句
    PreparedStatement ps = conn.prepareStatement(sql);
//    执行查寻并返回结果集
    ResultSet rs = ps.executeQuery();
//    查询结果集的next是读取下一行数据，如果读取到就返回真，否则就是假
    while (rs.next()){
//        将数据库的记录转换成java对象
        TbClass tbClass = new TbClass();
//        rs.get数据类型（“数据表中字段名称”就是获取查询结果中指定字段的数据）
        tbClass.setId(rs.getInt("id"));
        tbClass.setClassname(rs.getString("classname"));
        tbClass.setClassinfo(rs.getString("classinfo"));
//        java的Date类型对应的是数据库api的timestamp类型
        tbClass.setCreated(rs.getTimestamp("created"));
//        添加到集合
        list.add(tbClass);
    }


    conn.close();
    return list;
}

public static int delete(Integer id) throws SQLException {
  Connection conn = DBHelper.getConnertion();
  String sql ="delete from tb_class where id =?";
  PreparedStatement ps = conn.prepareStatement(sql);
  ps.setInt(1,id);
  int i = ps.executeUpdate();
  conn.close();
  return i;
}

}
